// package com.zmn.plat.admin.controller.common.mc.permitdata;
//
// import com.zmn.common.constant.GlobalConsts;
// import com.zmn.common.dictionary.DictModel;
// import com.zmn.common.dictionary.GlobalDict;
// import com.zmn.common.utils.response.ResponseUtil;
// import com.zmn.plat.admin.constant.CCConstants;
// import com.zmn.plat.admin.controller.PlatBaseController;
// import com.zmn.plat.common.constant.CompanyConsts;
// import com.zmn.plat.common.constant.DataPermitConsts;
// import com.zmn.plat.model.entity.area.BaseArea;
// import com.zmn.plat.model.entity.channel.Channel;
// import com.zmn.plat.model.entity.channel.ChannelQuery;
// import com.zmn.plat.model.entity.company.BaseCompany;
// import com.zmn.plat.model.entity.mc.permit.PermitData;
// import com.zmn.plat.model.entity.mc.permit.PermitDataStaff;
// import com.zmn.plat.model.entity.servcategory.ServCategory;
// import com.zmn.plat.services.interfaces.area.BaseAreaService;
// import com.zmn.plat.services.interfaces.channel.ChannelService;
// import com.zmn.plat.services.interfaces.channel.ChannelTypeService;
// import com.zmn.plat.services.interfaces.company.BaseCompanyService;
// import com.zmn.plat.services.interfaces.contractor.contractor.BaseContractorService;
// import com.zmn.plat.services.interfaces.mc.permitdata.PermitDataService;
// import com.zmn.plat.services.interfaces.mc.staff.PermitDataStaffService;
// import com.zmn.plat.services.interfaces.servcategory.ServCategoryService;
// import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.stereotype.Controller;
// import org.springframework.web.bind.annotation.RequestMapping;
// import org.springframework.web.bind.annotation.RequestParam;
//
// import javax.annotation.Resource;
// import javax.servlet.http.HttpServletResponse;
// import java.util.ArrayList;
// import java.util.Arrays;
// import java.util.Collections;
// import java.util.List;
// import java.util.Objects;
// import java.util.Optional;
// import java.util.stream.Collectors;
//
/// **
// * @author duanzuocai
// * @version v1.0
// * @类说明：
// * @since 2018/11/17 14:35
// */
// @Controller
// @RequestMapping("/common/mc/permitdata/")
// public class PermitDataController extends PlatBaseController {
// private final static int COMPANY = 1;
// private final static int SERVCATEGORY = 2;
// private final static int CITY = 3;
// private final static int CHANNEL_ONE = 411;
// private final static int CHANNEL = 4;
// private final static int PLAT_ORDER = 5;
// private final static int PLAT_SERVER = 6;
// private final static int SERVICE_PROVIDER = 7;
// private final static int INFORMATION = 8;
// private final static int CC_DATA = 9;
//
// @Autowired
// BaseCompanyService companyService;
// @Autowired
// ServCategoryService servCategoryService;
// @Autowired
// BaseAreaService areaService;
// @Autowired
// ChannelService channelService;
// @Resource
// protected ChannelTypeService channelTypeService;
//
// @Resource
// PermitDataService permitDataService;
//
// @Resource
// PermitDataStaffService permitDataStaffService;
//
// @Resource
// BaseContractorService baseContractorService;
//
//
// /**
// * region 区域联动
// *
// * @param response
// * @param type
// */
// @RequestMapping(value = "listChilds")
// public void listChilds(HttpServletResponse response, @RequestParam(value = "parentId", defaultValue = "1") int type) {
// List<DictModel> list = Collections.emptyList();
//
// if (type == COMPANY) {
// List<Integer> types = Arrays.asList(CompanyConsts.COMPANY_TYPE_SUBSIDIARY, CompanyConsts.COMPANY_TYPE_HEADOFFICE);
// list = companyService.listByTypesAndStatus(types, GlobalConsts.YES,null);
// } else if (type == SERVCATEGORY) {
// list = servCategoryService.listAll();
// } else if (type == CITY) {
// list = areaService.listAllCity();
// } else if (type == CHANNEL_ONE) {
// List<Channel> channels = channelService.listOneLevelChannel();
// List<DictModel> finalList = new ArrayList<>(channels.size());
//
// channels.forEach(channel -> {
// finalList.add(new DictModel(channel.getChannelId(), channel.getName()));
// });
//
// list = finalList;
// } else if (type == CHANNEL) {
// List<Channel> channels = channelService.listAll();
// List<DictModel> finalList = new ArrayList<>(channels.size());
//
// channels.forEach(channel -> {
// finalList.add(new DictModel(channel.getChannelId(), channel.getName()));
// });
//
// list = finalList;
// } else if (type == PLAT_ORDER || type == PLAT_SERVER) {
// list = GlobalDict.getPlatTypeList();
// } else if (type == SERVICE_PROVIDER) {
// list = companyService.listByTypesAndStatus(Arrays.asList(CompanyConsts.COMPANY_TYPE_SERVICE), GlobalConsts.YES,
// GlobalConsts.PLAT_MARK_ZMN);
// } else if (type == INFORMATION) {
// list = companyService.listByTypesAndStatus(Arrays.asList(CompanyConsts.COMPANY_TYPE_SERVICE), GlobalConsts.YES, null);
// }else if (type == CC_DATA) {
// list = CCConstants.getCcDepartments();
// }
//
// StringBuilder sb = new StringBuilder("[");
// String jsonFormat = "[\"%s\",\"%s\"]%s ";
//
// for (int i = 0; i < list.size(); i++) {
// DictModel kv = list.get(i);
// sb.append(String.format(jsonFormat, kv.getKey(), kv.getValue(), (i == list.size() - 1 ? "" : ",")));
// }
// sb.append("]");
//
// ResponseUtil.outWrite(response, sb.toString());
// }
//
// /**
// * region 区域联动
// *
// * @param response
// * @param type
// */
// @RequestMapping(value = "listChildsByDeptId")
// public void listChildsByDeptId(HttpServletResponse response, @RequestParam(value = "parentId", defaultValue = "1") int type
// , @RequestParam("deptId") Integer deptId, @RequestParam("staffId") Integer staffId) {
// List<DictModel> list = Collections.emptyList();
//
// // 根据部门id和类型 检查是否有部门权限
// List<PermitData> deptPermit = Optional.ofNullable(permitDataService.findByPermitAndType(deptId, type)).orElse(Collections.emptyList());
//
// // 遍历出权限id集合
// List<Integer> typeData = Collections.emptyList();
//
// if (deptPermit.size() > 0) {
// typeData = deptPermit.stream().map(permitData -> permitData.getTypeData()).collect(Collectors.toList());
// }
//
// // 查询公司集合
// if (type == COMPANY) {
// // 只查询总公司和子公司
// List<Integer> types = Arrays.asList(CompanyConsts.COMPANY_TYPE_SUBSIDIARY, CompanyConsts.COMPANY_TYPE_HEADOFFICE);
// if (typeData.size() > 0) {
// List<BaseCompany> baseCompanys =
// Optional.ofNullable(companyService.findByKeysAndTypes(typeData, types, GlobalConsts.YES, null)).orElse(Collections.emptyList());
// if (baseCompanys.size() > 0) {
// list = baseCompanys.stream().map(baseCompany -> new DictModel(baseCompany.getCompanyId(),
// baseCompany.getName())).collect(Collectors.toList());
// } else {
// list = companyService.listByTypesAndStatus(types, GlobalConsts.YES,null);
// }
// } else {
// list = companyService.listByTypesAndStatus(types, GlobalConsts.YES,null);
// }
// } else if (type == SERVCATEGORY) {
// if (typeData.size() > 0) {
// List<ServCategory> servCategorys = Optional.ofNullable(servCategoryService.findByKeys(typeData)).orElse(Collections.emptyList());
// if (servCategorys.size() > 0) {
// list = servCategorys.stream().map(servCategory -> new DictModel(servCategory.getCategId(),
// servCategory.getName())).collect(Collectors.toList());
// } else {
// list = servCategoryService.listAll();
// }
// } else {
// list = servCategoryService.listAll();
// }
// } else if (type == CITY) {
// if (typeData.size() > 0) {
// List<BaseArea> baseAreas = Optional.ofNullable(areaService.findByKeys(typeData)).orElse(Collections.emptyList());
// if (baseAreas.size() > 0) {
// list = baseAreas.stream().map(baseArea -> new DictModel(baseArea.getAreaId(), baseArea.getName())).collect(Collectors.toList());
// } else {
// list = areaService.listAllCity();
// }
// } else {
// list = areaService.listAllCity();
// }
// } else if (type == DataPermitConsts.PERMIT_DATA_TYPE_COUNTY) {
// List<PermitDataStaff> permits = permitDataStaffService.findByStaffAndType(staffId, DataPermitConsts.PERMIT_DATA_TYPE_CITY);
//
// if (permits.size() > 0 && permits.get(0).getTypeData() != 0) {
// Integer[] cityIds = new Integer[permits.size()];
// for (int i = 0; i < permits.size(); i++) {
// cityIds[i] = permits.get(i).getTypeData();
// }
//
// List<BaseArea> countys = areaService.listByParentIds(cityIds);
//
// List<DictModel> list2 = new ArrayList<>();
// countys.stream().forEach(county -> {
// list2.add(new DictModel(county.getAreaId(), county.getName()));
// });
// list = list2;
// } else {
// // 如果上一级城市为“空”或者为“全部”，区县不支持“全部”，则再查询“区/县”自己已经保存的进行显示
// List<PermitDataStaff> countys = permitDataStaffService.findByStaffAndType(staffId, DataPermitConsts.PERMIT_DATA_TYPE_COUNTY);
//
// Integer[] countyIds = new Integer[countys.size()];
// for (int i = 0; i < countys.size(); i++) {
// countyIds[i] = countys.get(i).getTypeData();
// }
//
// List<BaseArea> countys2 = areaService.listAreaByIds(countyIds);
//
// List<DictModel> list2 = new ArrayList<>();
// countys2.stream().forEach(county -> {
// list2.add(new DictModel(county.getAreaId(), county.getName()));
// });
// list = list2;
// }
// } else if (type == CHANNEL_ONE) {
// if (typeData.size() > 0) {
//// List<Channel> channels = channelService.listOneLevelChannel();
// List<Channel> channels = Optional.ofNullable(channelService.listByChannelIds(typeData)).orElse(Collections.emptyList());
// if (channels.size() > 0) {
// list = channels.stream().map(channel -> new DictModel(channel.getChannelId(), channel.getName())).collect(Collectors.toList());
// } else {
// list = channelService.listAll().stream().map(channel -> new DictModel(channel.getChannelId(),
// channel.getName())).collect(Collectors.toList());
// }
// } else {
// list = Collections.EMPTY_LIST;
// }
// } else if (type == CHANNEL) {
// if (typeData.size() > 0) {
// List<Channel> channels = Optional.ofNullable(channelService.listByChannelIds(typeData)).orElse(Collections.emptyList());
// if (channels.size() > 0) {
// list = channels.stream().map(channel -> new DictModel(channel.getChannelId(), channel.getName())).collect(Collectors.toList());
// } else {
// list = channelService.listAll().stream().map(channel -> new DictModel(channel.getChannelId(),
// channel.getName())).collect(Collectors.toList());
// }
// } else {
// ChannelQuery query = new ChannelQuery();
// query.setRank(GlobalConsts.LEVEL_2);
// list = channelService.listByQuery(query).stream().map(channel -> new DictModel(channel.getChannelId(),
// channel.getName())).collect(Collectors.toList());
// }
// } else if (type == PLAT_ORDER || type == PLAT_SERVER) {
// List<DictModel> platList = GlobalDict.getPlatTypeList();
// list = new ArrayList<>();
// if (typeData.size() > 0 && typeData.get(0) > 0) {
// for (Integer plat : typeData) {
// for (DictModel p : platList) {
// if (Objects.equals(p.getKey(), plat)) {
// list.add(p);
// }
// }
// }
// } else {
// list = platList;
// }
// } else if (type == SERVICE_PROVIDER) {
// List<BaseCompany> baseCompanys = Optional.ofNullable(companyService.findByKeysAndTypes(typeData,
// Arrays.asList(CompanyConsts.COMPANY_TYPE_SERVICE), GlobalConsts.YES, GlobalConsts.PLAT_MARK_ZMN)).orElse(Collections.emptyList());
// if (baseCompanys.size() > 0) {
// list = baseCompanys.stream().map(baseCompany -> new DictModel(baseCompany.getCompanyId(),
// baseCompany.getName())).collect(Collectors.toList());
// } else {
// list = companyService.listByTypesAndStatus(Arrays.asList(CompanyConsts.COMPANY_TYPE_SERVICE), GlobalConsts.YES, null);
// }
// } else if (type == INFORMATION) {
// List<BaseCompany> baseCompanys = Optional.ofNullable(companyService.findByKeysAndTypes(typeData,
// Arrays.asList(CompanyConsts.COMPANY_TYPE_SERVICE), GlobalConsts.YES, null)).orElse(Collections.emptyList());
// if (baseCompanys.size() > 0) {
// list = baseCompanys.stream().map(baseCompany -> new DictModel(baseCompany.getCompanyId(),
// baseCompany.getName())).collect(Collectors.toList());
// } else {
// list = companyService.listByTypesAndStatus(Arrays.asList(CompanyConsts.COMPANY_TYPE_SERVICE), GlobalConsts.YES, null);
// }
// } else if (type == CC_DATA) {
// List<DictModel> permitDataTypeList = CCConstants.getCcDepartments();
// list = new ArrayList<>();
// if (typeData.size() > 0 && typeData.get(0) > 0) {
// for (Integer plat : typeData) {
// for (DictModel p : permitDataTypeList) {
// if (Objects.equals(p.getKey(), plat)) {
// list.add(p);
// }
// }
// }
// } else {
// list = permitDataTypeList;
// }
//
// }
// StringBuilder sb = new StringBuilder("[");
// String jsonFormat = "[\"%s\",\"%s\"]%s ";
//
// for (int i = 0; i < list.size(); i++) {
// DictModel kv = list.get(i);
// sb.append(String.format(jsonFormat, kv.getKey(), kv.getValue(), (i == list.size() - 1 ? "" : ",")));
// }
// sb.append("]");
//
// ResponseUtil.outWrite(response, sb.toString());
// }
// }
